// pages/recharge/recharge.js
Page({

  /**
   * 页面的初始数据
   */
  data: {
    user:{
    },
    phone:'',
    isValidPhone: false,
    money: '',
    inputMoney: '',//临时变量
    phoneBill:'',
    showPopup: false,
    id:'',
    coupons:[
    ],
    selectedCoupon:{

    },
    orderNum:'',
    radio:'',
    show: false,
    loadingText:'订单生成中...',
    isAvailable:false,
    amount:''//最终金额
   },
//选择充值金额
onTapButton: function(e) {
  this.setData({
    money: e.target.dataset.value,
    amount:e.target.dataset.value,
    selectedCoupon:null,
    radio:''
  });
},
  queryUser: function() {
    return new Promise((resolve, reject) => {
      wx.request({
        url: 'http://localhost:8010/queryUser?phone=' + this.data.phone,
        method: 'POST',
        success: (res) => {
          if (res.data.data === null) {
            wx.showToast({
              title: '用户不存在',
              icon: 'none',
              duration: 2002
            })
            reject('User does not exist');
          } else {
            resolve(res.data.data);
          }
        }
      })
    })
  },
  //选择优惠券
  onChange(event){
    const couponId = event.detail;
    const selectedCoupon = this.data.coupons.find(coupon => coupon.id === couponId);
  // 检查当前优惠券是否已经被选中
  if (this.data.radio === couponId) {
    // 如果已经被选中，就取消选中
    this.setData({
      radio: '',
      amount: this.data.money,  // 更新最终金额为原始金额
      selectedCoupon: null
    });
  } else {
    // 如果没有被选中，就选中并更新最终金额
    this.setData({
      selectedCoupon:selectedCoupon,
      radio: couponId,
      amount: this.data.money - selectedCoupon.value,
    });
    console.log(this.data.selectedCoupon)
  }
  },
  onSubmit: async function(){
    if (!this.data.phone) {
      wx.showToast({
        title: '手机号不能为空',
        icon: 'none',
        duration: 2000
      })
      return;
    }
    if (!this.data.money) {
      wx.showToast({
        title: '请输入充值金额',
        icon: 'none',
        duration: 2001
      })
      return;
    }

    var order = {
      phone: this.data.phone,
      price: this.data.amount,
      totalPrice:this.data.money
    };

      this.setData({ show: true });
   
      wx.request({
        url:'http://192.168.2.10:8150/addRechargeOrder/',
        method: 'POST',
        data: order,
        success: (res) => {
          if (res.data.code === 200) {
            this.setData({
              orderNum:res.data.data
            })
            if(this.data.selectedCoupon!=null){
              wx.setStorage({ key: 'selectedCoupon', data: this.data.selectedCoupon.id });
            }else{
              wx.setStorage({ key: 'selectedCoupon', data: null });
            }
            setTimeout(() => {
              this.setData({ show: false });
              wx.setStorage({key:'orderNum', data:res.data.data});
              wx.navigateTo({
                url: '/pages/order/order'
              })
            }, 3000);
          }
        }
      })
  },
  //查用户优惠卷
  onTap: function() {
    const token = wx.getStorageSync('token');
    this.setData({ showPopup: true });
    wx.request({
      url: 'http://localhost:8099/queryUsersCouponBySortId/' + this.data.id + '/'+ 4,
      method: "GET",
      header: {
        'Authorization': 'Bearer ' + token // 将token添加到Authorization请求头中
      },
      success: (res) => {
        if (res.data.code === 200) {
            this.setData({
              coupons: res.data.data.map(coupon => ({
                ...coupon,
                isAvailable: coupon.usageAmount > this.data.money,  // 如果优惠券的使用金额大于输入的充值金额，将isAvailable设置为true
              })),
            });
        }
      }
    })
  },
  onClose: function() {
    this.setData({ showPopup: false });
  },
  onClickLeft() {
    wx.navigateBack({
      delta: 3
    })
  },
  //跟新充值金额
  onChangeMoney(event) {
    this.setData({
      radio:''
    })
    const money = event.detail;
    this.data.inputMoney = money; // 更新临时变量
    this.setData({
      money: money,
      coupons: this.data.coupons.map(coupon => ({
        ...coupon,
        isAvailable: coupon.usageAmount > event.detail,
      })),
      amount:money,
      selectedCoupon:'',
      radio:''
    });
    const selectedCoupon = this.data.coupons.find(coupon => coupon.id === this.data.radio);
    
  if (selectedCoupon && selectedCoupon.isAvailable) {
    // 如果不满足，清除选中状态
    this.setData({
      radio: '',
    });
  }
  },
  onInputPhone: function(event) {
    const phone = event.detail;
    // 正则表达式匹配手机号的规则，这里只是一个简单的示例
    const phonePattern = /^1[3-9]\d{9}$/;
    const isValid = phonePattern.test(phone);
    this.setData({
      phone: phone,
      isValidPhone: isValid // 更新手机号有效性状态
    });
  },

  yourBackFunction: function() {
    // 调用导航栏组件的返回方法
    this.navigationBar.back();
  },
 

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    this.navigationBar = this.selectComponent('#navigationBar');
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {
    const token = wx.getStorageSync('token');
    if(!token){
      wx.navigateTo({
      url: '/pages/loginPage/loginPage',
      })
    }
    wx.request({
      url: 'http://localhost:8010/getAppUserInfo?token=' + token,
      method: "POST", // 注意这里修改为 "POST"
      success: (res) => {
        if (res.data.code === 200) {
          this.setData({
            selectedCoupon:'',
            user: res.data.data, // 使用setData更新用户数据
            phone: res.data.data.phone, // 设置电话数据
            phoneBill:res.data.data.phoneBill,
            id:res.data.data.id,
            isValidPhone: /^1[3-9]\d{9}$/.test(res.data.data.phone)  // 根据用户数据初始化手机号的有效性状态
          });
        }
      },
      fail: (error) => {
        console.error(error); // 请求失败的处理逻辑
      }
    });
  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {
  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  }
})